Growing Object-Oriented Software, Guided by Tests

Growing Object-Oriented Software, Guided by Tests

  • Downloads:2008
  • Type:Epub+TxT+PDF+Mobi
  • Create Date:2021-06-28 09:53:45
  • Update Date:2025-09-06
  • Status:finish
  • Author:Steve Freeman
  • ISBN:0321503627
  • Environment:PC/Android/iPhone/iPad/Kindle

Summary

Foreword by Kent Beck The authors of this book have led a revolution in the craft of programming by controlling the environment in which software grows。" --Ward Cunningham "At last, a book suffused with code that exposes the deep symbiosis between TDD and OOD。 This one's a keeper。" --Robert C。 Martin "If you want to be an expert in the state of the art in TDD, you need to understand the ideas in this book。"--Michael Feathers Test-Driven Development (TDD) is now an established technique for delivering better software faster。 TDD is based on a simple idea: Write tests for your code before you write the code itself。 However, this simple idea takes skill and judgment to do well。 Now there's a practical guide to TDD that takes you beyond the basic concepts。 Drawing on a decade of experience building real-world systems, two TDD pioneers show how to let tests guide your development and "grow" software that is coherent, reliable, and maintainable。 Steve Freeman and Nat Pryce describe the processes they use, the design principles they strive to achieve, and some of the tools that help them get the job done。 Through an extended worked example, you'll learn how TDD works at multiple levels, using tests to drive the features and the object-oriented structure of the code, and using Mock Objects to discover and then describe relationships between objects。 Along the way, the book systematically addresses challenges that development teams encounter with TDD--from integrating TDD into your processes to testing your most difficult features。 Coverage includes - Implementing TDD effectively: getting started, and maintaining your momentum throughout the project - Creating cleaner, more expressive, more sustainable code - Using tests to stay relentlessly focused on sustaining quality - Understanding how TDD, Mock Objects, and Object-Oriented Design come together in the context of a real software development project - Using Mock Objects to guide object-oriented designs - Succeeding where TDD is difficult: managing complex test data, and testing persistence and concurrency

Download

Reviews

André Pitombeira

Object oriented software gets messy sometimes because developers struggle to get the design right due to the complexity of how objects communicate with each other。 This book deals with this problem by focusing not on objects, but rather in the interaction between objects。 This is possible by using a TDD approach with mocks。 So that, you can focus on the overall feature you are implementing and mock its dependencies。 Thus, enabling you to create better abstractions and helping you to make sure th Object oriented software gets messy sometimes because developers struggle to get the design right due to the complexity of how objects communicate with each other。 This book deals with this problem by focusing not on objects, but rather in the interaction between objects。 This is possible by using a TDD approach with mocks。 So that, you can focus on the overall feature you are implementing and mock its dependencies。 Thus, enabling you to create better abstractions and helping you to make sure that you are not only building something right, but building the right thing。 。。。more

Jordi Ruiz

It is a great book that everyone doing TDD should read; it would be a five star book, however I found "Part III: A worked example" a bit too dense for a non java developer。 It is a great book that everyone doing TDD should read; it would be a five star book, however I found "Part III: A worked example" a bit too dense for a non java developer。 。。。more

Ytg

The growing object-oriented software, guided by test part (basically just lots of refactoring) was so boring and useless that I almost stopped reading the book altogether。 But in later chapters it has quite some good advises about how to do the testing, which can be practical, so in the end it was worth reading。

Marcelo Schreiber

Software development is about solving problems。 In order to solve these problems, you need to have a model of the problem and the technical knowledge of a programming language and its available tools。This book provides you with a clear example of how to create this mental model of the problem while slowly developing it with tests while explaining the deciding making process which is much more important than the end result。I believe this is a must-read for anyone wanting to broaden their knowledg Software development is about solving problems。 In order to solve these problems, you need to have a model of the problem and the technical knowledge of a programming language and its available tools。This book provides you with a clear example of how to create this mental model of the problem while slowly developing it with tests while explaining the deciding making process which is much more important than the end result。I believe this is a must-read for anyone wanting to broaden their knowledge in software testing in an OOP language or at least a speed reading for non-OOP languages。It doesn't seem to be recommended often as Clean Code which is unfortunate because a development team would improve greatly if all team members are familiar with the concepts presented in those books。 。。。more

Aaron McAdam

This book explains outside-in Test-Driven Development popularised by the “London School”。 It's a fantastic introduction on how to use mocks well and design software with well-defined boundaries。 This book explains outside-in Test-Driven Development popularised by the “London School”。 It's a fantastic introduction on how to use mocks well and design software with well-defined boundaries。 。。。more

Mickey Kawick

Starts off excellent and digs into the culture of tesing, the mindset, and a bit of the politics。 It cerainly looks deeply at methodology and coding patterns。

Daniel Gomez Rico

This book goes deep into the testing world together with software architecture in a clear way that I haven't seen before。 This book goes deep into the testing world together with software architecture in a clear way that I haven't seen before。 。。。more

Aaron Munger

The example really wore me down with it's length and how much is required to remember, but there was some interesting redesign along the way。 The Java tooling was also so prevalent that this book would be twice as helpful to someone working with those tools。 The example really wore me down with it's length and how much is required to remember, but there was some interesting redesign along the way。 The Java tooling was also so prevalent that this book would be twice as helpful to someone working with those tools。 。。。more

Yannick Grenzinger

I am really disappointed by this book (especially after reading TDD by Example from Kent Beck)。 There are some typical good advices around Object Oriented Programming (some of them directly coming from DDD) and the book goes very deep on the example it uses to explain their "Outside In" method。But I have, personnaly, two big issues:- on the book itself, the focus on the example, the code and the "how" make it hard to understand the why and not to be lost in the details- on the approach proposed, I am really disappointed by this book (especially after reading TDD by Example from Kent Beck)。 There are some typical good advices around Object Oriented Programming (some of them directly coming from DDD) and the book goes very deep on the example it uses to explain their "Outside In" method。But I have, personnaly, two big issues:- on the book itself, the focus on the example, the code and the "how" make it hard to understand the why and not to be lost in the details- on the approach proposed, I am not really sure that the advice to use full integration tests and so much mocking with each class in isolation is the best way to do TDD。 In fact, this style have brought many critism。In the end, it's not a bad book but it's more for advanced practicionners who want a deep dive into the extreme TDD Mockist way。 。。。more

César

Great book。 I wish more people would follow the advice from this book。

Tomasz

Pretty good book。 "Part III: A Worked Example" uses rather old technologies, so I just skimmed through it。 Other parts are very informative。 I really liked Part IV about Sustainable Test-Driven Development (naming, data-driven test, etc。) and Part V containing good recipes for testing persistence, threads, async code。Interesting short end chapter about the history of mocking, Jmock, and Hamcrest。 I didn't know that the authors of the book are creators of the mentioned tools。 Although there are n Pretty good book。 "Part III: A Worked Example" uses rather old technologies, so I just skimmed through it。 Other parts are very informative。 I really liked Part IV about Sustainable Test-Driven Development (naming, data-driven test, etc。) and Part V containing good recipes for testing persistence, threads, async code。Interesting short end chapter about the history of mocking, Jmock, and Hamcrest。 I didn't know that the authors of the book are creators of the mentioned tools。 Although there are newer modern libraries like Mockito, it's still worth a look at Jmock。 Overall it is a must-read if you are a mockist or want to be one。 。。。more

Amr Swalha

I don't want to be a bad influence but the book is for beginners and I expected more for a higher level I don't want to be a bad influence but the book is for beginners and I expected more for a higher level 。。。more

James Leung

Very important design concepts

Denis

This book is truly amazing, I have learned a lot of things about: what types to mock, how to write my tests properly, test driven development, UI testing and other things。The only downside is that this book uses Java and I'm not experienced with it, reading Chapter 3 was hard and not very rewarding。 This book is truly amazing, I have learned a lot of things about: what types to mock, how to write my tests properly, test driven development, UI testing and other things。The only downside is that this book uses Java and I'm not experienced with it, reading Chapter 3 was hard and not very rewarding。 。。。more

Dmitry Hlebnikovs

Must read book, even if not TDD practitioner。 Have a lot of examples of test approaches that could be used immediately。 One of the best thing what I took with me is attitude/approach to logging and how it should be done。

Alexandre Santos

This book changed the way I develop software。 After having read a lot of articles about TDD and its advantages, this book taught me how to do it in real life projects and I can't say how much my designs/speed have improved。 IMHO it's a must read for any developer that wants to level up This book changed the way I develop software。 After having read a lot of articles about TDD and its advantages, this book taught me how to do it in real life projects and I can't say how much my designs/speed have improved。 IMHO it's a must read for any developer that wants to level up 。。。more

Baal Of

I hope to come back to this one at a later time。

Maurício Junior

This book in my opinion is a must for who wants follow two core principles: continuous incremental development and write expressive code。Steve begins to explain about a "walking skeleton" approach to start software development。 It is an implementation of the thinnest possible slice of real functionality that can automatically build, deploy, and test end-to-end。 The goal is to follow a lean approach to provide stakeholders with value in each feature。The first 30% of the books show all the theory This book in my opinion is a must for who wants follow two core principles: continuous incremental development and write expressive code。Steve begins to explain about a "walking skeleton" approach to start software development。 It is an implementation of the thinnest possible slice of real functionality that can automatically build, deploy, and test end-to-end。 The goal is to follow a lean approach to provide stakeholders with value in each feature。The first 30% of the books show all the theory about Test-First Culture (Unit, Integration, Acceptance) and what are the benefits when looking to implementing it in out team。 Another point that kept me reading the book was about Steve introducing concepts about hexagonal /port and adapter architecture that we now know well from Clean Architecture (Uncle Bob)。From 30% to 70%, the focus shifted to showing how to achieve object-oriented design through practical examples following Hexagonal Architecture in a "walking skeleton" project from the start。 。。。more

Guilherme Carvalho

A good book, filled with good ideas about testing and mocking。 It felt like sometimes it would dive too deeply into Java specific problems, and as java is not my main language it was a turn off。 Worth the read anyway。

Jerridan

Great principles to follow, though the book does get a bit repetitive

Dana

The book is hard to read, and it is highly coupled with an example of building an application and specifically Java/Spring。 Excellent book for people who have experience with testing, not that good for people who want to understand concepts in-depth。 I recommend something more detailed and less language specific。

Amir Sarabadani

One of best books about software design and TDD and tests in general。

yubo

The most impression from this book it categorize the dependencies into 3 groups: dependencies, notification and adjustment。 Additionally, it is conforming to philosophy to "tell, don't ask" principle; and emphasize "SRP" by examples step by step。 The most impression from this book it categorize the dependencies into 3 groups: dependencies, notification and adjustment。 Additionally, it is conforming to philosophy to "tell, don't ask" principle; and emphasize "SRP" by examples step by step。 。。。more

Alex

This is one of those books that I re-read from time to time。Every time when I reading it I find not only ideas to think of but a good practical advices that I can apply in my daily job

Michael Gaudet

I found this to be a tough read, even for a dry topic like this。 Its mostly in Java, which is applicable enough to most languages that it’s still accessible even if you program in a different object oriented language。There are a number of books out there on TDD, but this one is pretty unique out of the ones I’ve read so far in that it includes integration testing of the example, not just unit testing。 There’s almost a whole chapter on testing persistence layers, which most books on testing pract I found this to be a tough read, even for a dry topic like this。 Its mostly in Java, which is applicable enough to most languages that it’s still accessible even if you program in a different object oriented language。There are a number of books out there on TDD, but this one is pretty unique out of the ones I’ve read so far in that it includes integration testing of the example, not just unit testing。 There’s almost a whole chapter on testing persistence layers, which most books on testing practices wholly ignore。 The “meat” of this book centers around a step-by-step building of an application to handle bidding via an online forum。 There are a lot of code examples that are well formatted, and include some bold typeface to emphasize the changes。 It seems well thought out, but it’s an example that’s pretty tightly linked to Java libraries (Swing, XMPP libs, etc) and intricacies that it makes me surprised the title doesn’t specifically mention Java。 All in all, I read technical manuals for fun, but I found this a pretty grueling slog。 There are definitely some great tips on testing and team TDD in here peppered throughout, but I doubt I’ll be picking this one up again。 。。。more

Leo Maslovs

Definitely liked the book and added it to "Must read" category。 Brief, practical, inspiring and down to earth introduction into TDD practices。 I concur I am not sold on Mocks as a golden hammer to drive the design and building blocks to Test Suites。 In my practice - Mocks are something dreadful and better to be avoided by means of simpler tools (e。g。 FakeRepository (in-memory database) over _mocked_ Repository)。 I particularly liked the _practical bit_ it, e。g。 2/3 of the book materials are acco Definitely liked the book and added it to "Must read" category。 Brief, practical, inspiring and down to earth introduction into TDD practices。 I concur I am not sold on Mocks as a golden hammer to drive the design and building blocks to Test Suites。 In my practice - Mocks are something dreadful and better to be avoided by means of simpler tools (e。g。 FakeRepository (in-memory database) over _mocked_ Repository)。 I particularly liked the _practical bit_ it, e。g。 2/3 of the book materials are accompanied by applying the same TDD practices on Swing example application, which by itself is not a walk in the park。 In overall: liked and fully recommend。 5/5 。。。more

Tu

Very great book。 I've just only done the "reading part"。 I gonna re-read this once I have time to get into the coding part, which I think is more important。 Very great book。 I've just only done the "reading part"。 I gonna re-read this once I have time to get into the coding part, which I think is more important。 。。。more

Peter Aboalim

This is one of best books I have read。 It is very good book if you wanna how to use TDD in a right way。 The way the authors proposed their ideas and experience were amazing。 You will learn how to do incremental development and how to make your tests drive your application。 The book starts with 10 chapters include all concepts and approaches you wanna learn。 Then it has complete example to create an application from scratch which is driven by tests。 From chapter to another, you add a new feature This is one of best books I have read。 It is very good book if you wanna how to use TDD in a right way。 The way the authors proposed their ideas and experience were amazing。 You will learn how to do incremental development and how to make your tests drive your application。 The book starts with 10 chapters include all concepts and approaches you wanna learn。 Then it has complete example to create an application from scratch which is driven by tests。 From chapter to another, you add a new feature and apply approaches, concepts you have learned in earlier chapters。 I would recommend any Software Engineer to read this book。 。。。more

Amit Tiwari

One of the best book on TDDThis book covers the practice ways to apply TDD to project development。 Techniques introduced in this book are very useful for developer looking to learn TDD。

Dun Yang

This review has been hidden because it contains spoilers。 To view it, click here。 This book is usually compared against Kent Beck's TDD book to illustrate the 2 schools of tdd。 Thus, I was expecting the book to focus heavily on mocking techniques。While it does touch on mocking techniques, I found that there are additional takeaways worth emphasising too:1。 The illustration of the end-to-end testing process when employed at the start of the project。 The process and rationale behind doing it at the start (to tease out organisational redtape and to bring out potential risks earl This book is usually compared against Kent Beck's TDD book to illustrate the 2 schools of tdd。 Thus, I was expecting the book to focus heavily on mocking techniques。While it does touch on mocking techniques, I found that there are additional takeaways worth emphasising too:1。 The illustration of the end-to-end testing process when employed at the start of the project。 The process and rationale behind doing it at the start (to tease out organisational redtape and to bring out potential risks early; when it's least costly)2。 Techniques to improve on test readability 。。。more